<?php

class ConfigModel extends Model{

	public function getData(){
		//获取全部配置项信息
		$config = $this->all();
		foreach ($config as $k => $d) {
			//根据type 组合变量函数名
			$func = '_'.$d['type'];
			//向配置项中压入 组合后的表单
			$config[$k]['html'] = $this->$func($d);//$this->_text($d);
		}
		return $config;
	}
	/*
	*	组合input 文本框
	*/
	private function _text($d){
		$str = "<input type='text' name='{$d['name']}' value='{$d['value']}'/>";
		return $str;
	}
	/*
	*	组合textarea 文本框
	*/
	private function _textarea($d){
		return "<textarea name='{$d['name']}'>{$d['value']}</textarea>";
	}

	/*
	*	组合radio标签
	*/
	private function _radio($d){
		//拆分 config 表中 info信息
		$inputs = explode(',', $d['info']);
		$str = '';
		foreach ($inputs as  $i) {
			//拆分出radio标签的 值及 显示内容
			$v = explode('|', $i);
			//当前选中的 增加check=""
			$check = $v[0] == $d['value'] ? ' checked="" ' : '';
			//组合radio标签 存入字符串
			$str .= "<input $check type='radio' name='{$d['name']}' value='{$v[0]}'/> {$v[1]} "; 
		}
		return $str;
		//<input type='radio' name='' value=''> 是
		//<input type='radio' name='' value=''> 否
	}
	/*
	*	编辑修改配置项
	*/
	public function editConfig(){
		//根据name 值 修改对应配置项内容
		foreach ($_POST as $key => $d) {
			$where = array('name'=>$key);
			$this->where($where)->save(array('value'=>$d));

		}
		//在common/config 中生成网站配置项文件
		$path = APP_CONFIG_PATH.'webConfig.php';
		$this->data_to_file($_POST,$path);
		return true;
	}
	/*
	*	生成网站配置项文件方法
	*/
	private function data_to_file($data,$path){
		$data = "<?php return ".var_export($data,true).";?>";
		file_put_contents($path, $data);		
	}

	/*
	*	异步ajax 改变网站风格请求的模型方法
	*/
	public function changeStyle(){
		//获取网站风格
		$stylename = Q('stylename');
		//组合where修改条件
		$where = array('name'=>'WEBSTYLE');
		//修改配置项 
		$this->where($where)->save(array('value'=>$stylename));
		//获取网站配置项 数组
		$data = $this->getConfig();
		//覆盖webConfig.php 网站配置项文件
		$path = APP_CONFIG_PATH.'webConfig.php';
		$this->data_to_file($data,$path);
		return true;
	}
	//获得网站配置项数组方法
	private function getConfig(){
		$data = $this->getField('name,value');
		return $data;
	}
}
?>